package Question4_4; import CareerCupLibrary.*; import java.util.ArrayList; import java.util.Iterator; import java.util.LinkedList; public class Question { public static ArrayList<LinkedList<TreeNode>> findLevelLinkList(TreeNode root) { int level = 0; ArrayList<LinkedList<TreeNode>> result = new ArrayList<LinkedList<TreeNode>>(); LinkedList<TreeNode> list = new LinkedList<TreeNode>(); list.add(root); result.add(level, list); while (true) { list = new LinkedList<TreeNode>(); for(int i = 0; i < result.get(level).size(); i++){ TreeNode n = (TreeNode) result.get(level).get(i); if(n != null) { if(n.left != null) list.add(n.left); if(n.right!= null) list.add(n.right); } } if (list.size() > 0) { result.add(level + 1, list); } else { break; } level++; } return result; } public static void printResult(ArrayList<LinkedList<TreeNode>> result){ int depth = 0; for(LinkedList<TreeNode> entry : result) { Iterator<TreeNode> i = entry.listIterator(); System.out.print("Link list at depth " + depth + ":"); while(i.hasNext()){ System.out.print(" " + ((TreeNode)i.next()).data); } System.out.println(); depth++; } } public static void main(String[] args) { int[] nodes_flattened = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; TreeNode root = AssortedMethods.createTreeFromArray(nodes_flattened); ArrayList<LinkedList<TreeNode>> list = findLevelLinkList(root); printResult(list); } }